﻿using System;
using UnityEditor;
using UnityEngine;

namespace DefaultNamespace
{
    public class GameFps : MonoBehaviour
    {
        private float m_LastUpdateShowTime=0f;	//上一次更新帧率的时间;
 
        private float m_UpdateShowDeltaTime=0.01f;//更新帧率的时间间隔;
 
        private int m_FrameUpdate=0;//帧数;
 
        private float m_FPS=0;

        private void Awake()
        {
            // Application.targetFrameRate = 60;
        }
        
        void Start () 
        {
            m_LastUpdateShowTime=Time.realtimeSinceStartup;
        }
	
        // Update is called once per frame
        void Update () 
        {
            m_FrameUpdate++;
            if(Time.realtimeSinceStartup-m_LastUpdateShowTime>=m_UpdateShowDeltaTime)
            {
                m_FPS=m_FrameUpdate/(Time.realtimeSinceStartup-m_LastUpdateShowTime);
                m_FrameUpdate=0;
                m_LastUpdateShowTime=Time.realtimeSinceStartup;
            }
        }
 
        void OnGUI()
        {
            GUI.Label(new Rect(0,0,100,100),"FPS: "+m_FPS);
        }
        
        [MenuItem ("MyMenu/Do Test")]
        static void Test () 
        {
            Transform parent = 	Selection.activeGameObject.transform;
            Vector3 postion = parent.position;
            Quaternion rotation = parent.rotation;
            Vector3 scale = parent.localScale;
            parent.position = Vector3.zero;
            parent.rotation = Quaternion.Euler(Vector3.zero);
            parent.localScale = Vector3.one;
 
 
            Vector3 center = Vector3.zero;
            Renderer[] renders = parent.GetComponentsInChildren<Renderer>();
            foreach (Renderer child in renders){
                center += child.bounds.center;   
            }
            center /= parent.GetComponentsInChildren<Transform>().Length; 
            Bounds bounds = new Bounds(center,Vector3.zero);
            foreach (Renderer child in renders){
                bounds.Encapsulate(child.bounds);   
            }
	
            parent.position = postion;
            parent.rotation = rotation;
            parent.localScale = scale;
 
            foreach(Transform t in parent){
                t.position = t.position - bounds.center;
            }
            parent.transform.position = bounds.center + parent.position;
 
        }
    }
}